---
title: "Flex learning"
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: fill
social: menu
source_code: embed
runtime: shiny
---
```{r setup, include=FALSE}
library(flexdashboard)
library(tidyverse)
#library(dplyr)
#library(ggplot2)
library(qgraph)
library(shiny)
library(plotly)
#library(markdown)
#library(knitr)
```
```{r}
df <- read.csv("../Data/df_clean.csv")
#data("iris")
#df <- df[2:16]
df2 <- read.csv("../Data/df_clean_more_features2.csv", header = T)[2:20]
#str(df2)
#colnames(df2)
```
# Exploratory data analysis
```{r}
chosen_cntry_dem_inc <- reactive({req(input$countries_dem_inc)
df2 %>%
filter(cntry == input$countries_dem_inc) %>%
filter(hinctnta %in% input$var_dem_inc) %>%
filter(hlthhmp %in% input$var_dem_hamp) %>%
filter(medtrun %in% input$var_dem_healthcare) %>%
filter(cgtsmok %in% input$var_dem_smk) %>%
filter(alcfreq %in% input$var_dem_alc) %>%
filter(dosprt %in% input$var_dem_sprt) %>%
group_by(gender = gndr, age_cat) %>%
#count(age_cat, income = hinctnta, hampered = hlthhmp, healthcare = medtrun, dep_proxy) %>%
summarise(n = sum(n())) %>%
mutate(percentage = n / sum(n) * 100) %>%
arrange(age_cat)})
chosen_cntry_dem_hinc <- reactive({req(input$countries_dem_inc)
df2 %>%
filter(cntry == input$countries_dem_inc) %>%
filter(hinctnta %in% input$var_dem_inc) %>%
filter(hlthhmp %in% input$var_dem_hamp) %>%
filter(medtrun %in% input$var_dem_healthcare) %>%
filter(cgtsmok %in% input$var_dem_smk) %>%
filter(alcfreq %in% input$var_dem_alc) %>%
filter(dosprt %in% input$var_dem_sprt) %>%
group_by(hinctnta, dep_proxy) %>%
ungroup() %>%
count(income = hinctnta, dep_proxy) %>%
mutate(dep_proxy = factor(dep_proxy, ordered = TRUE, levels = c("Normal or Very Light", "Light", "Moderate", "Strong", "Extremely Strong")))
})
```
## Column A {data-width="650"}
### Chart A
```{r}
renderPlotly({req(input$countries_dem_inc)
plot_ly(data = chosen_cntry_dem_inc(), x=~age_cat, y = ~n, color = ~gender, type = 'bar', colors = c('Male' = '#444494', 'Female' = '#6dc5b5'), hovertemplate = "Value: %{y}<extra></extra>") %>%
layout(title = "Age Distribution by Gender" , xaxis = list(title = "Age Category"), yaxis = list(title = "Frequency"), barmode = 'group')})
```
### Chart B
```{r}
renderPlotly({req(input$countries_dem_inc)
plot_ly(data = chosen_cntry_dem_hinc(), x=~n, y = ~income, color = ~dep_proxy, type = 'bar', orientation = 'h', colors = c("#66CDAA", "#00CED1", "#4682B4", "#4169E1", "#00008B"), hovertemplate = "Value: %{x}<extra></extra>") %>%
layout(title = "Depressive symptoms intensity by Income level" , xaxis = list(title = "Count"), yaxis = list(title = "Income level", tickvals = 1:10), barmode = 'stack')})
```
## Column B
### Pie A
```{r}
chosen_cntry_dem_dep <- reactive({req(input$countries_dem_inc)
df2 %>%
filter(cntry == input$countries_dem_inc) %>%
filter(hinctnta %in% input$var_dem_inc) %>%
filter(hlthhmp %in% input$var_dem_hamp) %>%
filter(medtrun %in% input$var_dem_healthcare) %>%
filter(cgtsmok %in% input$var_dem_smk) %>%
filter(alcfreq %in% input$var_dem_alc) %>%
filter(dosprt %in% input$var_dem_sprt) %>%
group_by(gender = gndr, age_cat) %>%
count(dep_proxy) %>%
mutate(dep_proxy = factor(dep_proxy, ordered = TRUE, levels = c("Normal or Very Light", "Light", "Moderate", "Strong", "Extremely Strong")))
#summarise(n = sum(n())) %>%
#arrange(age_cat)
})
renderPlotly({
plot_ly(data= chosen_cntry_dem_dep(), type = 'pie', labels = ~dep_proxy, values = ~n) %>%
layout(legend = list(font = list(size = 12)), width = 600, title = paste("Sample from", input$countries_dem_inc, "given the selected features"))
})
```
### Pie B
```{r}
dep_dem_gen <- reactive({req(input$countries_dem_inc)
df2 %>% filter(cntry == input$countries_dem_inc) %>%
count(dep_proxy) %>% mutate(dep_proxy = factor(dep_proxy, ordered = TRUE, levels = c("Normal or Very Light", "Light", "Moderate", "Strong", "Extremely Strong")))})
renderPlotly({req(input$countries_dem_inc)
plot_ly(data= dep_dem_gen(), type = 'pie', labels = ~dep_proxy, values = ~n) %>%
layout(legend = list(font = list(size = 12)), width = 600, title =paste("Whole sample from", input$countries_dem_inc))
})
```
### Gauge
```{r}
renderGauge({
req(input$countries_dem_inc)
tot <- df2 %>% filter(cntry == input$countries_dem_inc) %>% summarise(total = n()) %>% pull(total)
#tot <- renderText({tot})
current <- sum(chosen_cntry_dem_inc()$n)
gauge(value = sum(current / tot) * 100, min = 0, max = (tot/tot)*100, symbol = '%', label = paste('Total:',current))
})
```
## Demographics & Health variables {.sidebar data-width="250"}
### *Country Selection*
```{r}
selectInput('countries_dem_inc', 'SELECT A COUNTRY', unique(df2$cntry))
```
------------------------------------------------------------------------
### *Level of income*
```{r}
op_inc <- sort(unique(df2$hinctnta))
checkboxGroupInput("var_dem_inc", '1 is lowest, 10 is highest - click here for detailed information:', op_inc, inline = T, selected = op_inc)
```
------------------------------------------------------------------------
### *Hampered in daily activities by illness*
```{r}
checkboxGroupInput("var_dem_hamp", '...' ,choiceNames = c("No", "To some extent", "A lot") , choiceValues = unique(df2$hlthhmp), inline = T, selected = unique(df2$hlthhmp))
op_dem_hamp <- reactive({df2[, c(input$var_dem_hamp)]})
```
------------------------------------------------------------------------
### *Unable to access health care in the last 12 months*
```{r}
checkboxGroupInput("var_dem_healthcare", '...:' ,choiceNames = c("No","Yes") , choiceValues = unique(df2$medtrun), inline = T, selected = unique(df2$medtrun))
op_dem_healthcare <- reactive({df2[, c(input$var_dem_healthcare)]})
```
------------------------------------------------------------------------
### *Smoking habits*
```{r}
smoking_status <- c("Never smoked",
"A few times during life",
"Used to but not anymore",
"Yes, but not every day",
"Daily, 9 or less",
"Daily, 10 or more")
op_smk <- sort(unique(df2$cgtsmok))
checkboxGroupInput("var_dem_smk", '...', choiceValues = op_smk, choiceNames = smoking_status ,inline = T, selected = op_smk)
```
------------------------------------------------------------------------
### *Alcohol habits*
```{r}
alc_status <- c(
"Never",
"Less than once a month",
"Once a month",
"2-3 times a month",
"Once a week",
"Several times a week",
"Every day"
)
op_alc <- sort(unique(df2$alcfreq))
checkboxGroupInput("var_dem_alc", '...',choiceValues = op_alc, choiceNames = alc_status ,inline = T, selected = op_alc)
```
------------------------------------------------------------------------
### *Physical exercise*
```{r}
op_sprt <- sort(unique(df2$dosprt))
checkboxGroupInput("var_dem_sprt", '...', op_sprt ,inline = T, selected = op_sprt)
```